/*
 * Juego.h
 *
 *  Created on: 17/09/2012
 *      Author: De La
 */

#ifndef JUEGO_H_
#define JUEGO_H_

#include <list>
#include <map>
#include "Pantalla.h"
#include "TipoPersonaje.h"
#include "Textura.h"
#include "Nivel.h"
#include "../network/Mutex.h"

using namespace std;

class Juego {

private:
	Pantalla *pantalla;
	map <string, string> parametros;
	list <TipoPersonaje> tiposPersonaje;
	list <Textura> texturas;
	Nivel *nivel;
	Mutex nivelMutex;

public:
	Juego();
	virtual ~Juego();
	const list<Textura>& getTexturas() const;
	void setTexturas(const list<Textura>& texturas);
	list<TipoPersonaje>& getTiposPersonaje();
	void setTiposPersonaje(const list<TipoPersonaje>& tiposPersonaje);
	Nivel* getNivel();
	void setNivel(Nivel* nivel);
	Pantalla* getPantalla() const;
	void setPantalla(Pantalla* pantalla);
	map<string, string>& getParametros();
	void setParametros(const map<string, string>& parametros);

	Personaje *getProtagonista();

	void lockNivel();
	void unlockNivel();
};

#endif /* JUEGO_H_ */
